<?php
namespace app\port\controller;
use think\Db;
class Source extends Common{
	/**
	 * 获取素材数据
	 * @param  integer $cate_id [description]
	 * @param  boolean $count   [description]
	 * @return [type]           [description]
	 */
	function index($cate_id=0,$count=true){
		$where=[
			'uid'=>$this->user['id'],
		];
		if($cate_id>0){
			$where['cate_id']=$cate_id;
		}
		$options=[
			'with'=>'media',
			'order'=>'id desc'
		];
		$list=model($this->table)->readAll($where,$count,$options);
		if(count($list)){
			foreach ($list as $k => $v) {
				foreach ($v['media'] as $j => $c) {
					$list[$k]['media'][$j]['src']=images($c['link']);
				}
			}
			return json('获取数据成功',0,$list->toArray());
		}
		return json('获取数据成功');
	}


	/**
	 * 查询一条素材的信息
	 * @param [array] $post [接收用户传递的请求数据]
	 *                      -- token string 登录凭证
	 *                      -- data json 操作数据集
	 *                      	-- id 素材id
	 * @return [type] [description]
	 */
	function queryOneSource(){
		$post=input('');
		// echo json_encode($post);
		// 判断是否存在data的json字符串
		if (isset($post['data'])) {
			// 将json数据还原成数组
			$data = json_decode($post['data'],true);
			if (!empty($data)) {
				// 判断分组是否存在
				// var_dump($data);
				// unset($data['media']);
				$uid = $this->user['id'];
				if (isset($data['id']) && $data['id'] != '') {
					$source = Db::name('source')->where('id','eq',$data['id'])->find();
				}
				// print_r($source);
				// 判断必填项是否为空
				if ($source == '' || $source['uid'] != $uid) {
					return json('参数错误',1);
				}
				// 抛出查询结果
				if ($source != '') {
					$source['map'] = json_decode($source['map'],true);
					return json('查询成功',0,$source);
				}
				else{
					return json('查询失败',1);
				}
			}
			else{
				return json('非法操作',1);
			}
		}
		else{
			return json('非法操作',1);
		}
	}


	/**
	 * 修改素材数据信息
	 * @param [array] $post [接收用户传递的请求数据]
	 *                      -- token string 登录凭证
	 *                      -- data json 操作数据集
	 *                      	-- id 素材id
	 *                      	-- uid 素材关联的用户id
	 *                      	-- cate_id 素材所属的分类（分组）id
	 *                      	-- title 素材标题
	 * @return [json] [返回修改结果]
	 */
	function editOneSource(){
		// 
		$post=input('');
		// echo json_encode($post);
		// 判断是否存在data的json字符串
		if (isset($post['data'])) {
			// 将json数据还原成数组
			$data = json_decode($post['data'],true);
			if (!empty($data)) {
				// 判断分组是否存在
				// var_dump($data);
				unset($data['media']);
				$uid = $this->user['id'];
				if ((isset($data['id']) || isset($data['uid']) || isset($data['cate_id'])) && $data['id'] != '' && $data['uid'] != '' && $data['cate_id'] != '') {
					$cate = Db::name('category')->where('id','eq',$data['cate_id'])->where('uid','eq',$uid)->find();
				}
				// print_r($cate);
				// 判断必填项是否为空
				if ($cate == '' || $cate['uid'] != $uid || $data['uid'] != $uid) {
					return json('素材分类信息有误',1);
				}
				elseif ($data['title'] == '') {
					return json('标题不能为空',1);
				}


				// 执行修改
				$upd = Db::name('source')->update($data);
	            

	            // 获取该素材原本有几条多媒体记录
            	$media = Db::name('media')->where('source_id','eq',$data['id'])->select();
            	$count_old = count($media);
            	// 获取上传的图片信息数组
		        $files_id = [];
		        // 多媒体文件上传
	            $files=[];
	            $upd_mda = 0;
		        $_numbers=range(0,8);
		        $i = 0;
		        foreach($_numbers as $v) {
		        	// 获取上传多媒体文件信息
		        	$_inputName='file'.$v;
		        	$file=request()->file($_inputName);
		        	// 判断是否为空
		        	if($file){
		        		$files['file'.$v] = $file;
		        		$i++;
		        	}
		        }
		        if (!empty($files)) {
	            	// 判断当前上传的多媒体信息有几条
	            	$count_new = count($files);
	            	// 判断总记录是否超过9条，超过9条返回失败信息
	            	if (($count_new + $count_old) > 9) {
	            		return json('媒体文件过多',0);
	            	}

	            	// 保存上传图片，获取上传图片的记录id
	            	foreach ($files as $k => $val) {
	            		// $arr = json_decode($val,true);
	            		// print_r($arr);
	            		$rs=$this->uploads($val,$k);
	            		if(!empty($rs)){
		                    if(is_integer(key($rs))){
		                        foreach ($rs as $v) {
		                            $files_id[]=$v['id'];
		                        }
		                    }else{
		                        $files_id[]=$rs['id'];
		                    }
		                }else{
		                    return json(lang('Upload failure'),1);
		                }
	            	}
	            	// 修改多媒体表，将素材id添加到多媒体记录表的对应行中
	            	foreach ($files_id as $key => $value) {
	            		$upds = Db::name('media')->where('id','eq',$value)->update(['source_id'=>$data['id']]);
	            		if ($upds > 0) {
	            			$upd_mda = $upd_mda + $upds;
	            		}
	            	}
	            }
	            
				// 抛出修改结果
				if ($upd > 0 || $upd_mda > 0) {
					return json('修改成功',0);
				}
				else{
					return json('修改失败',1);
				}
			}
			else{
				return json('非法操作',1);
			}
		}
		else{
			return json('非法操作',1);
		}
		// $data = json_decode($post['data']);
		// echo "<br><br>";
		// var_dump($data);
	}


	/**
	 * 添加素材数据信息
	 * @param [array] $post [接收用户传递的请求数据]
	 *                      -- token string 登录凭证
	 *                      -- data json 操作数据集
	 *                      	-- uid 素材关联的用户id
	 *                      	-- cate_id 素材所属的分类（分组）id
	 *                      	-- title 素材标题
	 * @return [json] [返回添加结果]
	 */
	function addOneSource(){
		// 
		$post=input('');
		// echo json_encode($post);
		// 判断是否存在data的json字符串
		if (isset($post['data'])) {
			// 将json数据还原成数组
			$data = json_decode($post['data'],true);
			if (!empty($data)) {
				// 判断分组是否存在
				// var_dump($data);
				unset($data['media']);
				$uid = $this->user['id'];
				if ((!isset($data['id']) && isset($data['uid']) && isset($data['cate_id'])) && $data['uid'] != '' && $data['cate_id'] != '') {
					$cate = Db::name('category')->where('id','eq',$data['cate_id'])->where('uid','eq',$uid)->find();
				}
				else{
					return json('参数错误',1);
				}
				// echo "2222222222222222222222222222222222222";
				// 判断必填项是否为空
				if ($cate == '' || $cate['uid'] != $uid || $data['uid'] != $uid) {
					return json('素材分类信息有误',1);
				}
				elseif ($data['title'] == '') {
					return json('标题不能为空',1);
				}
				// 执行添加
				$upd = Db::name('source')->insert($data);
				$source_id = Db::name('source')->getLastInsID();

		        
            	// 获取上传的图片信息数组
		        $files_id = [];
		        // 多媒体文件上传
	            $files=[];
	            $upd_mda = 0;
		        $_numbers=range(0,8);
		        foreach($_numbers as $v) {
		        	// 获取上传多媒体文件信息
		        	$_inputName='file'.$v;
		        	$file=request()->file($_inputName);
		        	// 判断是否为空
		        	// var_dump(!empty($file));
		        	if(!empty($file)){
		        		$files['file'.$v] = $file;
		        	}
		        }
		        if (!empty($files)) {
	            	// 判断当前上传的多媒体信息有几条
	            	$count_new = count($files);
	            	// 判断总记录是否超过9条，超过9条返回失败信息
	            	if (($count_new) > 9) {
	            		return json('媒体文件过多',0);
	            	}

					// var_dump($files);
	            	// 保存上传图片，获取上传图片的记录id
	            	foreach ($files as $k => $val) {
	            		// $arr = json_decode($val,true);
	            		// var_dump($val);
	            		$rs=$this->uploads($val,$k);
	            		if(!empty($rs)){
		                    if(is_integer(key($rs))){
		                        foreach ($rs as $v) {
		                            $files_id[]=$v['id'];
		                        }
		                    }else{
		                        $files_id[]=$rs['id'];
		                    }
		                }else{
		                    return json(lang('Upload failure'),1);
		                }
	            	}
	            	// 修改多媒体表，将素材id添加到多媒体记录表的对应行中
	            	foreach ($files_id as $key => $value) {
	            		$upds = Db::name('media')->where('id','eq',$value)->update(['source_id'=>$source_id]);
	            		if ($upds > 0) {
	            			$upd_mda = $upd_mda + $upds;
	            		}
	            	}
	            }
				// 抛出修改结果
				if ($upd > 0) {
					return json('添加成功',0);
				}
				else{
					return json('添加失败',1);
				}
			}
			else{
				return json('非法操作',1);
			}
		}
		else{
			return json('非法操作',1);
		}
		// $data = json_decode($post['data']);
		// echo "<br><br>";
		// var_dump($data);
	}


	/**
	 * 删除素材数据信息
	 * @param [array] $post [接收用户传递的请求数据]
	 *                      -- token string 登录凭证
	 *                      -- data json 操作数据集
	 *                      	-- id 删除素材id
	 * @return [json] [返回添加结果]
	 */
	function delOneSource(){
		// 
		$post=input('');
		// echo json_encode($post);
		// 判断是否存在data的json字符串
		if (isset($post['data'])) {
			// 将json数据还原成数组
			$data = json_decode($post['data'],true);
			if(!empty($data)) {
				// 判断分组是否存在
				// var_dump($data);
				$uid = $this->user['id'];
				// 判断该用户是否存在改素材信息
				if (isset($data['id']) && $data['id'] != '') {
					$source = Db::name('source')->where('id','eq',$data['id'])->where('uid','eq',$uid)->find();
				}
				else{
					return json('素材id不能为空',1);
				}
				// 判断必填项是否为空
				if ($source == '' || $data['id'] == '') {
					return json('找不到素材',1);
				}
				// 执行删除
				$upd = Db::name('source')->delete($data['id']);
				// 查找素材媒体文件
				$mediaData = Db::name('media')->where('source_id','eq',$data['id'])->select();
				// 循环删除媒体文件
				foreach ($mediaData as $key => $value) {
					// $where['id'] = $data['id'];
					// if ($media['source_id'] != '') {
					// 	// $where = $where.' and source_id = '.$data['source_id'];
					// 	$where['source_id'] = $data['source_id'];
					// }
					// 删除图片
		    		// $upd = $this->delMedia($value['id'],$where);
		    		$this->delMedia($value['id']);
				}
				// 抛出修改结果
				if ($upd > 0) {
					return json('删除成功',0);
				}
				else{
					return json('删除失败',1);
				}
			}
			else{
				return json('非法操作',1);
			}
		}
		else{
			return json('非法操作',1);
		}
		// $data = json_decode($post['data']);
		// echo "<br><br>";
		// var_dump($data);
	}




	/**
	 * 删除素材数据信息
	 * @param [array] $post [接收用户传递的请求数据]
	 *                      -- token string 登录凭证
	 *                      -- data json 操作数据集
	 *                      	-- id 媒体id
	 *                      	-- source_id 删除媒体资源对应的素材id
	 * @return [json] [返回添加结果]
	 */
	function delOneMedia(){
		// 
		$post=input('');
		// echo json_encode($post);
		// 判断是否存在data的json字符串
		if (isset($post['data'])) {
			// 将json数据还原成数组
			$data = json_decode($post['data'],true);
			if (!empty($data)) {
				// 判断分组是否存在
				// var_dump($data);
				$uid = $this->user['id'];
				// 判断该用户是否存在改素材信息
				if (isset($data['id']) && $data['id'] != '') {
					$media = Db::name('media')->where('id','eq',$data['id'])->find();
				}
				else{
					return json('媒体文件id不能为空',1);
				}
				// var_dump($media);
				// 判断必填项是否为空
				if ($media == '' || $data['id'] == '') {
					return json('找不到该文件',1);
				}
				$where['id'] = $data['id'];
				if ($media['source_id'] != '') {
					// $where = $where.' and source_id = '.$data['source_id'];
					$where['source_id'] = $data['source_id'];
				}
				// 执行删除
				// $upd = Db::name('media')->where($where)->delete();
				// 删除图片
	    		$upd = $this->delMedia($data['id'],$where);
	    		$upd = json_decode($upd,true);
				// var_dump($upd);
				// 抛出修改结果
				if ($upd['status'] == 0) {
					return json('删除媒体文件成功',0);
				}
				else{
					return json('删除媒体文件失败',1);
				}
			}
			else{
				return json('非法操作',1);
			}
		}
		else{
			return json('非法操作',1);
		}
		// $data = json_decode($post['data']);
		// echo "<br><br>";
		// var_dump($data);
	}
}